// APP端监听[直接使用GRPC服务进行获取信息、请求数据等]
package client

import (
	"fmt"

	clientserver "gitee.com/xgotool/sqlite-logs-more/app/client_server"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
)

var conn *grpc.ClientConn

// 获取连接
func client(remote string) *grpc.ClientConn {
	if conn != nil {
		return conn
	}
	fmt.Println("进行grpc连接。。。")
	if remote[0:7] != "grpc://" {
		panic("持续性服务目前仅支持grpc协议开启，请使用grpc://进行拼接对应地址信息")
	}
	var err error
	// 连接grpc通信
	conn, err = grpc.Dial(remote[7:len(remote)-1],
		grpc.WithTransportCredentials(insecure.NewCredentials()),      // 不使用ssl证书进行连接
		grpc.WithPerRPCCredentials(new(clientserver.ClientTokenAuth)), // 使用token进行携带token连接
	) // 链接grpc
	if err != nil {
		panic("GRPC连接打开失败：" + err.Error())
	}
	return conn
}

// 关闭连接
func Close() {
	conn.Close()
	conn = nil
}
